<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ItemCompraMapper
 *
 * @author felipe
 */
class App_Model_ItemCompraMapper extends Voitech_Mapper{
    
    private $coCompra;
    
    public function __construct(App_Model_ItemCompra $obModel,$coCompra){
        $this->obModel = $obModel;
        $this->coCompra = (int) $coCompra;        
    }
    
    public function buscarPorId() {
        $obRow = App_Model_Db_ItemCompra::build()->buscarPorId($this->obModel->getObProduto()->getCoProduto(),$this->coCompra);
        if(empty($obRow))
        {
            return;
        }
        $this->carregar($obRow->current());               
    }
    
    public function carregar(stdClass $obRow) {
        $obProdutoMapper = new App_Model_ProdutoMapper(new App_Model_Produto());               
        $this->obModel->setDsLote($obRow->ds_lote)
                      ->setNuQuantidadeProduto($obRow->nu_quantidade_produto)
                      ->setNuQuantidadeUnitaria($obRow->nu_quantidade_unitaria)
                      ->setVlUnitario($obRow->vl_unitario)
                      ->setObProduto($obProdutoMapper->carregar($obRow));
        return $this->obModel;
    }
    
    public function cadastrar() {
        $arrItemCompra = $this->retornarArrayPopulado();
        $arrItemCompra['co_compra'] = $this->coCompra;
        return App_Model_Db_ItemCompra::build()->insert($arrItemCompra);                                         
    }
    
    public function alterar(){
        $arrItemCompra = $this->retornarArrayPopulado();        
        return App_Model_Db_ItemCompra::build()->update($arrItemCompra,App_Model_Db_ItemCompra::build()->select()
                                                                                                     ->where('co_produto = ?',$this->obModel->getObProduto()->getCoProduto())
                                                                                                     ->where('co_compra =?',$this->coCompra));                
    }
    
    public function ativar() {
        $arrItemCompra = array('st_ativo'=>'S');       
        return App_Model_Db_ItemCompra::build()->update($arrItemCompra,App_Model_Db_ItemCompra::build()->select()
                                                                                                     ->where('co_produto = ?',$this->obModel->getObProduto()->getCoProduto())
                                                                                                     ->where('co_compra =?',$this->coCompra));                
    }
    
    public function desativar() {
        $arrItemCompra = array('st_ativo'=>'N');
        return App_Model_Db_ItemCompra::build()->update($arrItemCompra
                                                      ,App_Model_Db_ItemCompra::build()->select()
                                                                                      ->where('co_produto = ?',$this->obModel->getObProduto()->getCoProduto())
                                                                                      ->where('co_compra =?',$this->coCompra));                
    }
    
    public function retornarArrayPopulado() {
        $arrItemCompra = array('co_produto'=>$this->obModel->getObProduto()->getCoProduto()
                               ,'nu_quantidade_produto'=>$this->obModel->getNuQuantidadeProduto()
                               ,'nu_quantidade_unitaria'=>$this->obModel->getNuQuantidadeUnitaria()
                               ,'vl_unitario'=>$this->obModel->getVlUnitario()
                               ,'ds_lote'=>$this->obModel->getDsLote());
        return $arrItemCompra;
   }
}
